package com.itboye.services.ucenter.interfaces;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itboye.mybatis.helper.ByPageInfoHelper;
import com.itboye.system.exception.ByServiceException;

import java.util.HashMap;
import java.util.List;

/**
 * Created by hebidu on 16/7/21.
 */
public interface IBaseService<T> {

    /**
     * 更新单个模型
     * @param model 模型
     * @return
     */
    int update(HashMap params)  throws ByServiceException ;

    /**
     * 获取单个
     * @param id
     * @return
     */
    T getInfo(int id)  throws ByServiceException ;

    /**
     * 获取单个实体,通过传入条件
     * @param params
     * @return
     */
    T getInfoBy(HashMap params)  throws ByServiceException;

    /**
     * 增加字段与排序
     * @param params
     * @param fields
     * @param orders
     * @return
     * @throws ByServiceException
     */
    T getInfoBy(HashMap params,String fields,String orders) throws ByServiceException;


    /**
     * 查询
     * @param params
     * @return
     */
    List<T> query(HashMap params,String fields,String orders)  throws ByServiceException;

    /**
     * 分页查询
     * @param params 查询过滤参数
     * @param pageNum  当前页码
     * @param pageSize 每页大小
     * @return 分页对象page
     */
    ByPageInfoHelper<T> queryByPaging(HashMap params, int pageNum, int pageSize, String fields, String orders)  throws ByServiceException;

    /**
     * 插入一条数据
     * @param model
     * @return
     */
    int insert(T model) throws ByServiceException;

    /**
     * 批量插入数据
     * @param list
     * @return
     */
    int batchInsert(List<T> list)  throws ByServiceException;
}
